]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
ShellWindowTracker: fix reference counting of ShellApp
authorGiovanni Campagna <gcampagna@src.gnome.org>
Sat, 4 Jan 2014 15:49:34 +0000 (16:49 +0100)
committerGiovanni Campagna <gcampagna@src.gnome.org>
Sat, 4 Jan 2014 16:34:10 +0000 (17:34 +0100)
All get_app_from_*() helpers are transfer full, but
get_app_from_gapplication_id() was directly returning the result
of lookup_app(), which is transfer none.

https://bugzilla.gnome.org/show_bug.cgi?id=721439

src/shell-window-tracker.c

index 4bccf6e943140a3eb6198fd10c5cdfa525d061cf..a6311344fccc8d0a068d9b0af64645b8a216e822 100644 (file)
@@ -256,6 +256,17 @@ get_app_from_window_wmclass (MetaWindow  *window)
   return NULL;
 }
 
+/**
+ * get_app_from_gapplication_id:
+ * @monitor: a #ShellWindowTracker
+ * @window: a #MetaWindow
+ *
+ * Looks only at the given window, and attempts to determine
+ * an application based on _GTK_APPLICATION_ID.  If one can't be determined,
+ * return %NULL.
+ *
+ * Return value: (transfer full): A newly-referenced #ShellApp, or %NULL
+ */
 static ShellApp *
 get_app_from_gapplication_id (MetaWindow  *window)
 {
@@ -268,10 +279,12 @@ get_app_from_gapplication_id (MetaWindow  *window)
 
   id = meta_window_get_gtk_application_id (window);
   if (!id)
-    return FALSE;
+    return NULL;
 
   desktop_file = g_strconcat (id, ".desktop", NULL);
   app = shell_app_system_lookup_app (appsys, desktop_file);
+  if (app)
+    g_object_ref (app);
 
   g_free (desktop_file);
   return app;